﻿#include "mybutton.h"

#include <QMouseEvent>
#include <QPainter>

MyButton::MyButton(QWidget *parent) : QPushButton(parent) {}

void MyButton::setImage(QString normal, QString hover, QString pressed) {
  m_normal = normal;
  m_hover = hover;
  m_pressed = pressed;
  m_pixmap.load(m_normal);  //默认加载normal图片
  update();                 //触发paintEvent()
}

void MyButton::mousePressEvent(QMouseEvent *ev) {
  if (ev->button() == Qt::LeftButton) {
    m_pixmap.load(m_pressed);
    update();
  }
  //重写QpushButton的事件，如果需要发出clicked()信号，调用父类事件
  QPushButton::mousePressEvent(ev);
}

void MyButton::mouseReleaseEvent(QMouseEvent *ev) {
  if (ev->button() == Qt::LeftButton) {
    m_pixmap.load(m_normal);
    update();
  }
  QPushButton::mouseReleaseEvent(ev);
}

void MyButton::enterEvent(QEvent *ev) {
  Q_UNUSED(ev)
  m_pixmap.load(m_hover);
  update();  //触发paintEvent()事件
}

void MyButton::leaveEvent(QEvent *ev) {
  Q_UNUSED(ev)
  m_pixmap.load(m_normal);
  update();
}

void MyButton::paintEvent(QPaintEvent *ev) {
  Q_UNUSED(ev)
  QPainter p(this);
  p.drawPixmap(rect(), m_pixmap);  //当前窗口对应的矩形区域，要绘制的对象
}
